Ниже приведены примеры файлов макросценариев, содержащих макрокоманды SURFERа. Эти демонстрационные примеры показывают, как следует создавать макросценарии, а также некоторые возможности GS Scripterа. Приведенные образцы можно выполнить с помощью программы GS Scripter.
Образец 1 (Файл SAMPLE1.BAS )
В данном макросценарии для каждого метода построения сети выполняются следующие действия:
1. Строится сеть по заданному файлу данных.
2. Создается карта изолиний.
3 Построенная страница выводится на печать.
‘ Создать объект SURFERа
SET Surf = CreateObject("Surfer.App")
‘ Выполнить следующую группу операций для каждого метода
‘ построения сети
FOR Method = 0 TO 6
‘ Открыть новое окно Графика
Surf.FileNew()
‘ Построить сеть по файлу данных с помощью текущего метода
IF Surf.GridData("DEMOGRID.DAT", gridMethod=Method,
OutGrid="SAMPLE") = 0 THEN END
‘ Построить карту изолиний по созданному сеточному файлу
IF Surf.MapContour("SAMPLE") = 0 THEN END
‘ Для того, чтобы напечатать текущую страницу, снимите
‘ символ комментария со следующей строки
'Surf.FilePrint()
NEXT
Образец 2 (Файл SAMPLE2.BAS )
Данный пример демонстрирует элементарный шаблон макросценария. В первой строке макросценария задается исходный файл данных. После этого строятся карта изолиний и график поверхности.
Рассмотренную процедуру можно использовать для любого файла данных; для этого достаточно соответствующим образом изменить значение аргумента InFile$.
‘ Задать входной файл данных и выходной сеточный файл
InFile$ = "DEMOGRID.DAT"
OutFile$ = "SAMPLE"
‘ Создать объект SURFERа
SET Surf = CreateObject("Surfer.App")
‘ Создать новое окно Графика
Surf.FileNew()
‘ Построить сеть по заданному файлу данных
IF Surf.GridData(InFile$, GridMethod=1, SearchRad1=4.53,
SearchRad2=4.53, OutGrid=OutFile$) = 0 THEN END
‘ Построить закрашенную карту изолиний
IF Surf.MapContour(OutFile$, Flags=1,
ID="Contour #1") = 0 THEN END
‘ Выделить карту изолиний
Surf.Select("Contour #1")
‘ Переместить и изменить размер выделенной карты
Surf.TransformSel(Left=1, Bottom=0, Width=7, Height=5)
‘ Построить график поверхности
IF Surf.MapSurface(OutFile$, xLineColor="Blue",
yLineColor="Blue", ID="Surface #1") = 0 THEN END
‘ Выделить график поверхности
Surf.Deselect()
Surf.Select(ID="Surface #1")
‘ Переместить и изменить размер выделенного графика
Surf.TransformSel(Left=1, Bottom=6, Width=7, Height=5)
Образец 3 (Файл SAMPLE3.BAS)
Данный макросценарий создает несколько карт по одному файлу данных. Файл данных организован в столбцы, соответствующие значениям X, Y, Z1, Z2, и т.д. Карты изолиний строятся для каждого подмножества данных: X,Y,Z1; X,Y,Z2; и т.д.)
Первая строка файла данных содержит заголовки столбцов, которые используются в качестве заголовков соответствующих карт.
‘ Задать входной файл данных
File$ = "SAMPLE3"
‘ Создать объект SURFERа
SET Surf = CreateObject("Surfer.App")
‘ Загрузить файл данных в окно Рабочего листа
hWnd = Surf.FileOpen(File$+".DAT",1)
IF hWnd = 0 THEN END
‘ Создать новое окно Графика
Surf.FileNew()
‘ Отключить автоматическое перерисовывание, чтобы операции
‘ выполнялись быстрее
Surf.ViewAutoRedraw(0)
‘ Выполнить следующую группу операций для каждого
‘ столбца Z ...
FOR iMap=0 TO 5
‘ Сформировать заголовок карты путем конкатенации заголовков
‘ столбцов, находящихся в первой строке Рабочего листа
Title$ = Surf.GetWksCell(hWnd,0,0) + \
Surf.GetWksCell(hWnd,0,1) + \
Surf.GetWksCell(hWnd,0,iMap+2)
‘ Построить сеть по текущим X,Y,Z данны
IF Surf.GridData(File$+".DAT", xCol=0, yCol=1,
zCol=iMap+2) = 0 THEN END
‘ Создать карту изолиний
IF Surf.MapContour(File$, ID=Title$) = 0 THEN END
‘ Выделить текущую созданную карту
Surf.Deselect()
Surf.Select(Title$)
‘ Определить положение карты на странице
Width = 3
Height = 3
Left = 0.5 + int(iMap/3) * (Width+1)
Bottom = 0.5 + (iMap mod 3) * (Height+.5)
‘ Переместить карту в заданное место на странице
Surf.TransformSel(Left,Bottom,Width,Height)
‘ Вывести заголовок карты
Surf.DrawText(Left+Width/2-.5, Bottom-.1, "Plot of " + Title$)
NEXT
‘ Включить обратно автоматическое перерисовывание
‘ и перерисовать окно
Surf.ViewAutoRedraw(1)
Surf.ViewRedraw()